import { _decorator, Button, Sprite, SpriteFrame, resources, JsonAsset ,Node} from 'cc';
const { ccclass, property } = _decorator;
import {baseViewCmpt} from './components/baseViewCmpt';
import {MainHome} from './MainHome'
import {ResLoadHelper} from "./utils/resLoadHelper"

@ccclass('HomeView')
export class HomeView extends baseViewCmpt {
    @property({type:Button,tooltip:"home组建"}) 
    homeBtn:Button = null;

    @property({type:Button,tooltip:"home组建"}) 
    homeBtn2:Button = null;

    @property({type:Node,tooltip:"homebody"}) 
    homebody:Node = null;

    public dataInfo:any = {};
    // 由父组件注入，便于直接调用父方法
    public parentMainHome: MainHome | null = null;

    start() {

    }


     onJiaZaiZiYuan(){
        return new Promise<SpriteFrame | null>((resolve, reject) => {
            ResLoadHelper.loadImage(`textures/bg_jzy`, (err, sprite: SpriteFrame) => {
                if (sprite) {
                    resolve(sprite);
                }else{
                    resolve(null);
                }
            })
        })
    }


    async getInit(){
        let sprite: SpriteFrame | null = await this.onJiaZaiZiYuan();
        console.log(sprite)
        if(sprite){
            if (this.homebody) {
                const spriteComponent = this.homebody.getComponent(Sprite);
                if (spriteComponent) {
                    spriteComponent.spriteFrame = sprite;
                } else {
                    console.error("Homebody节点上未找到Sprite组件");
                }
            } else {
                console.error("homebody节点未赋值");
            }
        }
    }

    protected onLoad(): void {
        super.onLoad();
        if(this.homeBtn){
            this.homeBtn.node.on(Button.EventType.CLICK,()=>{
                const payload = { type: 'listUpdate', value: null, source: 'HomeView' };
                this.node.parent?.emit('listUpdate', payload);
            },this)
        }
        if(this.homeBtn2){
            this.homeBtn2.node.on(Button.EventType.CLICK,()=>{
                // 优先使用注入的父组件引用
                if (this.parentMainHome) {
                    this.parentMainHome.parentMethod("来自子预制体的消息");
                    return;
                }
                // 兜底：从父节点上查找脚本（当层级或注入失败时）
                const parentNode = this.node.parent;
                const parentScript = parentNode?.getComponent(MainHome);
                parentScript?.parentMethod("来自子预制体的消息");
            },this)
        }

        // 使用resources.load加载JSON资源文件，并指定JsonAsset类型
        resources.load<JsonAsset>('config/dailyTask', (err, jsonAsset) => {
            if (err) {
                console.error('加载JSON资源失败:', err);
                return;
            }
            
            // 成功加载JSON资源后，可以访问其json属性获取数据
            const jsonData = jsonAsset.json;
            console.log('JSON资源加载成功:', jsonData);
            
            // 这里可以处理加载到的JSON数据，例如更新UI等
            // 示例：打印第一条任务的标题
            if (jsonData && jsonData.length > 0) {
                console.log('第一条任务标题:', jsonData[0].title);
            }
        });

        this.getInit();
    }

    onEnable() {
    
    }

    updateData(){
        console.log("updateData------------");
    }

    update(deltaTime: number) {
        
    }

    // 发送数据给父容器的方法
    private notifyParent(data: {type: string, value: any, source: string}) {
        // 通过事件系统发送数据，父容器会监听这个事件
        this.node.emit('child_data_changed', data);
    }
}

